// 
// lunohod.h
// AK 04 2014
//
#ifndef lunohod_h
#define lunohod_h

#if defined(ARDUINO) && ARDUINO >= 100
  #include "Arduino.h"
#else
  #include "WProgram.h"
#endif 

#define sMIN 215
#define sMED 240
#define sMAX 255

#define aForward   0
#define aBackward  1
#define aRotate    2
#define aStop      3
#define aSkip      4

struct MOTOR {
  int in1;      // INPUT1
  int in2;      // INPUT2
  int en;       // ENABLE1
};

struct ULTRASONIC {
  int trig;     // Trigger
  int echo;     // Echo
  int led;      // Led
};
  
class lunohod
{
	public:
		lunohod();
		void set_motor_1(int in1, int in2, int en);
        void set_motor_2(int in1, int in2, int en);
        void set_ultrasonic_1(int trig, int echo, int led);
        void set_ultrasonic_2(int trig, int echo, int led);
		void forward(int speed=255);
		void    back(int speed=255);
        void  rotate(int speed=255);
		void    stop();
		void   goLun(const int, const int);
        long distance(int s=1);
		int  maxdist;
	private:
		void set_m_pins(MOTOR *m);
		void set_u_pins(ULTRASONIC *u);
		void m_forward(MOTOR *m, int speed=255);
		void    m_back(MOTOR *m, int speed=255);
		void    m_stop(MOTOR *m);
        long Timing(ULTRASONIC *u);
        long duration,distace_cm;
                
		MOTOR M1;
		MOTOR M2;
        ULTRASONIC U1;
        ULTRASONIC U2;
};

#endif // #ifndef lunohod_h
